home *** CD-ROM | disk | FTP | other *** search
/ Directorty Opus 5 - Magellan / Opus 5 - Magellan.iso / Archiv / ArcByName.lha / ArcByName.dopus5 < prev    next >
Text File  |  1995-09-27  |  6KB  |  182 lines

  1. /*    $VER: ArcByName for DOpus5 V1.0 (27.09.95) by Willy Gwerder
  2.  
  3.       This DOpus Arexx script will archive the selected source-entries to the
  4.       current destination. The entries will have the same filename
  5.       (+ .lha or .lzx) like the original files. The source-files can be deleted.
  6.  
  7.       You can use lha or lzx as archiver.
  8.       LhA and LZX are expected to be in your c: directory
  9.  
  10.       IMPORTANT !!!! Call this program with arguments like this:
  11.  
  12.       ArcByName.Dopus5 lha {Qp}     or
  13.       ArcByName.Dopus5 lzx {Qp}
  14.  
  15.       The argument {Qp} is needed to find the calling DOpus AREXX-port.
  16.       If you don't give it, the progam will use DOPUS.1 !!  */
  17.  
  18. /*--------------------------------------------------------------------------*/
  19.  
  20.  
  21. /*------------------- check arguments --------------------------------------*/
  22.  
  23. PARSE UPPER ARG cmd DOpusPort .
  24. IF DOpusPort ='' THEN DOpusPort = DOPUS.1
  25. ADDRESS VALUE DOpusPort
  26. IF (cmd ~= "LHA")&(cmd ~= "LZX") THEN DO
  27.    dopus request '"I need LHA or LZX as argument. See Docs!" ABORT'
  28.    EXIT
  29. END
  30.  
  31. /*------------------- define and reset variables ---------------------------*/
  32.  
  33. OutputWindow = '>CON:0/150/640/40/'cmd'_Output/INACTIVE/CLOSE/SCREEN'DOpusPort''
  34. OPTIONS results
  35. OPTIONS failat 50
  36. pass = 0
  37. del = 0
  38. oldcd = PRAGMA(D)
  39.  
  40. /*------------------- ask about windows and dirs ---------------------------*/
  41.  
  42. lister query source
  43. Sourcelister = result
  44. lister clear Sourcelister abort
  45.  
  46. lister query dest
  47. Destlister = result
  48.  
  49. SELECT
  50.    WHEN Sourcelister = "RESULT" THEN DO
  51.       dopus request '"I need a source!" ABORT'
  52.       EXIT
  53.    END
  54.    WHEN Destlister = "RESULT" THEN DO
  55.       dopus request '"I need a destination!" ABORT'
  56.       EXIT
  57.    END
  58.    WHEN WORDS(Sourcelister) >1 | WORDS(Destlister) >1 THEN DO
  59.       dopus request '"This script cannot be used with multiple Source/Destlisters" ABORT'
  60.       EXIT
  61.    END
  62.    OTHERWISE DO
  63.       lister set Sourcelister busy on
  64.       lister set Destlister busy on
  65.    END
  66. END
  67.  
  68. lister query Sourcelister path
  69. SourceDir = result
  70. PRAGMA(D,SourceDir)
  71. lister query Destlister path
  72. DestDir = result
  73.  
  74. /*------ ask user if he wants the source files to be deleted ----------------*/
  75.  
  76. DO FOREVER
  77.    dopus request '"Delete source-files after archiving?" yes|no'
  78.    del = RC
  79.       IF del = 1 THEN dopus request '"Are you sure???" yes|no'
  80.       ELSE break
  81.    sure = RC
  82.    IF sure = 1 THEN break
  83. END
  84.  
  85. /*---------------------- get number of selected files ------------------------*/
  86.  
  87. lister query Sourcelister numselentries
  88. TotFiles = result
  89.  
  90. IF TotFiles = 0 THEN DO
  91.    dopus request '"There is nothing to archive!" ABORT'
  92.    call cleanup
  93. END
  94. RemFiles = TotFiles
  95.  
  96. /*---------------------- archive selected files ------------------------------*/
  97.  
  98. lister set Sourcelister progress TotFiles 'Archiving...'
  99.  
  100. DO WHILE RemFiles > 0
  101.    lister query Sourcelister firstsel
  102.    CurrentFile = result
  103.    CurrentFile = delstr(CurrentFile,1,1)                    /* strip  */
  104.    CurrentFile = delstr(CurrentFile,Length(CurrentFile),1)  /* quotation marks */
  105.    IF UPPER(RIGHT(CurrentFile,5)) = ".INFO" | UPPER(RIGHT(CurrentFile,4)) = ".LHA" |,
  106.       UPPER(RIGHT(CurrentFile,4)) = ".LZX" THEN DO
  107.       lister select Sourcelister '"'CurrentFile'" off'
  108.       lister refresh Sourcelister
  109.       RemFiles = RemFiles -1
  110.       ITERATE
  111.    END
  112.    lister set Sourcelister progress count TotFiles-RemFiles+1
  113.    lister set Sourcelister progress name '"'CurrentFile'"'
  114.    pass = pass +1
  115.  
  116.    ADDRESS command
  117.  
  118.    IF cmd = LHA THEN,
  119.    'LhA -rey a "'DestDir''CurrentFile'.lha" "'CurrentFile'" "'CurrentFile'.info" 'OutputWindow''
  120.    ELSE,
  121.    'LZX -r -e -3 a "'DestDir''CurrentFile'.lzx" "'CurrentFile'" "'CurrentFile'.info" 'OutputWindow''
  122.  
  123.    /*--------------------- check for CTRL-C or error -------------------------*/
  124.  
  125.    IF RC > 9 THEN DO
  126.       address Value DOpusPort
  127.       IF EXISTS(''DestDir''CurrentFile'.'cmd'') THEN command Delete '"'DestDir''CurrentFile'.'cmd'"'
  128.       CALL CLEANUP
  129.    END
  130.  
  131.    /*--------------------- update listers ------------------------------------*/
  132.  
  133.    ADDRESS VALUE DOpusPort
  134.  
  135.    lister add Destlister '"'CurrentFile'.'cmd'" 'pass' -1 0 RWED ArcByName_Temp_Entry'
  136.    IF DestDir = SourceDir & del = 1 THEN DO 
  137.       lister remove Destlister '"'CurrentFile'"'
  138.       lister remove Destlister '"'CurrentFile'.info"'
  139.    END
  140.    lister refresh Destlister
  141.  
  142.    IF DestDir = SourceDir THEN lister add Sourcelister '"'CurrentFile'.'cmd'" 'pass' -1 0 RWED ArcByName_Temp_Entry'
  143.  
  144.    IF del ~= 1 THEN DO
  145.       lister select Sourcelister '"'CurrentFile'" off'
  146.       lister select Sourcelister '"'CurrentFile'.info" off'
  147.    END
  148.    ELSE DO
  149.       ADDRESS command
  150.       delete '"'SourceDir''CurrentFile'" all'
  151.       delete '"'SourceDir''CurrentFile'.info"'
  152.       ADDRESS VALUE DOpusPort
  153.       lister remove Sourcelister '"'CurrentFile'"'
  154.       lister remove Sourcelister '"'CurrentFile'.info"'
  155.    END
  156.    lister refresh Sourcelister
  157.  
  158.    /*--------------------- check for user abort ------------------------------*/
  159.  
  160.    lister query Sourcelister abort
  161.    aborted = result
  162.    if aborted = 1 THEN CALL CLEANUP
  163.  
  164.    /*--------------------- are there any files left? -------------------------*/
  165.  
  166.    lister query Sourcelister numselentries
  167.    RemFiles = result   
  168. END
  169.  
  170. /*------------------------ rescan windows and exit ---------------------------*/
  171.  
  172. CLEANUP:
  173.  
  174. lister clear Sourcelister progress
  175. lister set Sourcelister busy off
  176. lister set Destlister busy off
  177. lister read Destlister DestDir force
  178. lister wait Destlister
  179. IF SourceDir = DestDir THEN lister copy Destlister Sourcelister
  180. PRAGMA(D,oldcd)
  181. EXIT
  182.